import pandas as pd
import yfinance as yf
from yahoofinancials import YahooFinancials
import plotly.graph_objects as go
import plotly.express as px
import matplotlib.pyplot as plt
import numpy as np
import warnings
warnings.filterwarnings('ignore')
np.random.seed(42)
def create_line_chart(index_chart,
values_chart,
end_time):
fig = go.Figure() # create figure
fig.add_trace(go.Scatter(x=index_chart,
y=values_chart ) )
fig.update_layout(
dict(title_text="Portfolio values (from 26/10/2021 - {})".format(end_time),
autosize=True,
)
)
fig.show()
def create_all_line_chart(watch_list,
data,
start_time,
end_time):
fig = go.Figure() # create figure
for i in watch_list:
fig.add_trace(go.Scatter(x=data.index, y=data[i], name = i) )
fig.update_layout(
dict(title_text="STOCK DATA (from {} - {})".format(start_time,end_time),
autosize=True,
yaxis_title='Close price')
)
fig.show()
def growth_during_week(data_stock):
data_sort = pd.DataFrame(100*(data_stock.iloc[-1, :-1]-data_stock.iloc[0, :-1]) / data_stock.iloc[0, :-1]).sort_values([0])
data_sort['%'] = round(data_sort[0],2).astype(str) + ' %'
fig = px.bar(data_sort, y = data_sort.index, x = 0, text = data_sort['%'], color=data_sort[0],
color_continuous_scale='oranges')
fig.update_layout(
dict(title_text="Stock rate of return (from {} to {})".format(str(data_stock.index[0])[:-9],
str(data_stock.index[-1])[:-9]),
autosize=True,
yaxis_title=None,
xaxis_title=None,))
fig.update_coloraxes(showscale=False)
fig.show()
def portfolio_df(start_time,
end_time,
stock_list,
count_stock):
watch_list_df = yf.download(stock_list,
start=start_time,
end=end_time,
progress=False)
watch_list_df = watch_list_df['Close']
watch_list_df = watch_list_df.reindex(columns=stock_list)
watch_list_df['Portfolio'] = (watch_list_df*count_stock.values()).sum(1)
return watch_list_df
def description_portfolio(watch_list,
data_portfolio,
count_stock):
for i in watch_list:
print("Price of {} in {} is ----> {}".format(i,
str(data_portfolio.index[-1])[:10],
round(data_portfolio[i][-1],3)))
weight_i = count_stock[i] * data_portfolio[i][-1] / data_portfolio.iloc[-1, -1]
print("Weight of {} in our portfolio is ----> {}".format(i, round(weight_i,4)))
print("Overall value of {} in our portfolio is ----> {}".format(i,
round(data_portfolio[i][-1]*count_stock[i], 3)))
print("Count of {} stock is ----> {}".format(i, round(count_stock[i],3)))
print('\n##################################################\n')
def create_line_chart_port(watch_list_port,
start_time,
end_time):
watch_df_port = yf.download(watch_list_port,
start=start_time,
end=end_time,
progress=False,
)
watch_df_port = watch_df_port['Close']
fig = go.Figure() # create figure
for i in watch_list_port:
fig.add_trace(go.Scatter(x=watch_df_port.index,
y=watch_df_port[i],
name = i) )
fig.update_layout(
dict(title_text="Our stocks data",
autosize=True,
yaxis_title='Close price')
)
fig.show()
def create_others_price(all_watch_list,
portfolio_list,
start_time,
end_time):
watch_list_others = [s for s in all_watch_list if s not in portfolio_list]
watch_df_others = yf.download(watch_list_others,
start=start_time,
end=end_time,
progress=False,
)
watch_df_others = watch_df_others ['Close']
create_all_line_chart(watch_list = watch_list_others,
data = watch_df_others,
start_time = watch_df_others.index[0],
end_time = watch_df_others.index[-1])
def price_stock_in_date(stock, date_price):
watch_df = yf.download(stock,
start=date_price,
end=date_price,
progress=False,
)
watch_df = watch_df['Close']
return watch_df.values[0]
watch_list = ["AMZN", "C", "AAPL", "IBM", "CSCO",
"NVDA", "MSFT", "TM", "CVX", "GOOG",
"FB", "TSLA", "JPM", "JNJ", "BAC",
"RLLCF", "WMT", "MA", "V", "DIS", "PG"]
watch_df = yf.download(watch_list,
start='2018-10-26',
end='2021-10-27',
progress=False,
)['Close']
watch_df
fig = go.Figure() # create figure
for i in watch_df.columns:
fig.add_trace(go.Scatter(x=watch_df.index, y=watch_df[i], name = i) )
fig.update_layout(
dict(title_text="STOCK DATA (from 2020/10/25 - 2021/10/26)",
autosize=True,
yaxis_title='Close price')
)
fig.show()
fig = go.Figure()
for i in watch_df.diff().columns:
fig.add_trace(go.Box(y=watch_df.diff()[i], name=i))
fig.update_layout(
dict(title_text="Growth value(from 2018/10/25 - 2021/10/25)",
autosize=True,
yaxis_title='Diff value')
)
fig.show()
fig = go.Figure()
for i in watch_df.diff().columns:
fig.add_trace(go.Box(y=watch_df.pct_change()[i], name=i))
fig.update_layout(
dict(title_text="Growth rate (from 2018/10/25 - 2021/10/25)",
autosize=True,
yaxis_title='Rate of return')
)
fig.show()
watch_list_26_10=['FB','GOOG','TSLA',"MSFT","BAC","NVDA"]
watch_list_26_10
fig = go.Figure() # create figure
for i in watch_list_26_10:
fig.add_trace(go.Scatter(x=watch_df.index, y=watch_df[i], name = i) )
fig.update_layout(
dict(title_text="Our 6 stocks data (from 2020/10/25 - 2021/10/26)",
autosize=True,
yaxis_title='Close price')
)
fig.show()
fig = go.Figure()
for i in watch_df[watch_list_26_10].columns:
fig.add_trace(go.Histogram(x=watch_df[watch_list_26_10][-100:].pct_change()[i],name=i,bingroup=5))
# Overlay both histograms
fig.update_layout(barmode='overlay')
# Reduce opacity to see both histograms
fig.update_traces(opacity=0.75)
fig.show()
fig = go.Figure()
for i in watch_df[watch_list_26_10].columns:
fig.add_trace(go.Histogram(x=watch_df[watch_list_26_10][-100:].diff()[i],name=i,bingroup=5))
# Overlay both histograms
fig.update_layout(barmode='overlay')
# Reduce opacity to see both histograms
fig.update_traces(opacity=0.75)
fig.show()
watch_df_list=watch_df[watch_list_26_10]
watch_df_list
watch_df_list_change = watch_df_list.pct_change()
watch_df_list_change
all_portfolios=pd.DataFrame(columns=['portfolio_return',
'portfolio_st_dev',
'weight of '+ watch_df_list.columns[0],
'weight of '+ watch_df_list.columns[1],
'weight of '+ watch_df_list.columns[2],
'weight of '+ watch_df_list.columns[3],
'weight of '+ watch_df_list.columns[4],
'weight of '+ watch_df_list.columns[5]])
number_assets = len(watch_df_list.columns)
number_porfolios = 15000
for porfolios in range(number_porfolios):
weight = np.random.random(number_assets)
weight = weight / weight.sum()
porfolio_return=(watch_df_list_change[1:]*weight).sum(1).mean()
portfolio_var=np.dot(np.dot(weight.T,watch_df_list_change.cov()),
weight)
portfolio_st_dev = np.sqrt(portfolio_var)
all_portfolios =all_portfolios.append({'portfolio_return':porfolio_return,
'portfolio_st_dev':portfolio_st_dev,
'weight of '+ watch_df_list.columns[0]:weight[0],
'weight of '+ watch_df_list.columns[1]:weight[1],
'weight of '+ watch_df_list.columns[2]:weight[2],
'weight of '+ watch_df_list.columns[3]:weight[3],
'weight of '+ watch_df_list.columns[4]:weight[4],
'weight of '+ watch_df_list.columns[5]:weight[5]},
ignore_index=True) #append row for every car
fig = go.Figure() # create figure
fig.add_trace(go.Scatter(x=all_portfolios.portfolio_st_dev,
y=all_portfolios.portfolio_return,mode='markers') )
fig.update_layout(
dict(title_text="All possible porfolios with our stocks",
autosize=True,
yaxis_title='Rate of returns',
xaxis_title='Standard deviation')
)
fig.show()
all_portfolios['Sharpe_ratio']=all_portfolios['portfolio_return']/all_portfolios['portfolio_st_dev']
best_sharpe=all_portfolios.iloc[all_portfolios['Sharpe_ratio'].argmax(),:] # portfolio with maximum Sharpe ratio
best_return = all_portfolios.iloc[all_portfolios['portfolio_return'].argmax(),:] # portfolio with maximum rate of return
best_sd = all_portfolios.iloc[all_portfolios['portfolio_st_dev'].argmin(),:] # porfolio with minimum st dev
fig = go.Figure() # create figure
fig.add_trace(go.Scatter(x=all_portfolios.portfolio_st_dev,
y=all_portfolios.portfolio_return,mode='markers',showlegend=False) )
fig.add_trace(go.Scatter(x=np.array(best_sharpe[1]),
y=np.array(best_sharpe[0]),name='Best from Sharpe',
marker=dict(size=[15])) )
fig.add_trace(go.Scatter(x=np.array(best_return[1]),
y=np.array(best_return[0]),name='Best from Return',
marker=dict(size=[15])) )
fig.add_trace(go.Scatter(x=np.array(best_sd[1]),
y=np.array(best_sd[0]),name='Best from SD',
marker=dict(size=[15]) ))
for i in watch_df_list_change.columns:
fig.add_trace(go.Scatter(x=np.array(np.std(watch_df_list_change[i])),
y=np.array(np.mean(watch_df_list_change[i])),
text=i,
name=i,
marker=dict(size=[20]) ))
fig.update_traces(textposition="bottom right")
fig.update_layout(
dict(title_text="All possible porfolios with our stocks",
autosize=True,
yaxis_title='Rate of returns',
xaxis_title='Standard deviation')
)
fig.show()
weight_list=watch_df_list[-100:].pct_change().median()/sum(watch_df_list[-100:].pct_change().median())
for i in range(len(best_sharpe[2:-1])):
weight_list[i]=best_sharpe[2:-1][i]
weight_list
watch_df_list_change['porfolio return']=(watch_df_list_change*weight_list.values).sum(1).values
watch_df_list_change
fig = go.Figure() # create figure
fig.add_trace(go.Scatter(x=watch_df_list_change.index[1:],
y=watch_df_list_change['porfolio return'] ) )
fig.update_layout(
dict(title_text="Portfolio rate of return (from 2020/10/25 - 2021/10/26)",
autosize=True,
yaxis_title='rate of return')
)
fig.show()
watch_df_list['porfolio mean price']=(watch_df_list*weight_list.values).sum(1).values
watch_df_list
fig = go.Figure() # create figure
fig.add_trace(go.Scatter(x=watch_df_list.index[1:],
y=watch_df_list['porfolio mean price'] ) )
fig.update_layout(
dict(title_text="Portfolio mean price (from 2020/10/25 - 2021/10/26)",
autosize=True,
yaxis_title='Mean price')
)
fig.show()
count_stock={}
for i in watch_list_26_10:
count_stock[i] = 100000*weight_list[i]/watch_df_list[i][-1]
for i in watch_list_26_10:
print("Price of {} in 26/10/2021 is ----> {}".format(i,round(watch_df_list[i][-1],3)))
print("Weight of {} in our portfolio is ----> {}".format(i,round(weight_list[i],4)))
print("Overall value of {} in our portfolio is ----> {}".format(i,round(100000*weight_list[i],3)))
print("Count of {} stock is ----> {}".format(i,round(count_stock[i],3)))
print('\n##################################################\n')
watch_list_26_10
watch_df_26_10__03_11 = yf.download(watch_list,
start='2021-10-27',
end='2021-11-04',
progress=False,
)
watch_df_26_10__03_11 = watch_df_26_10__03_11['Close']
watch_list_2=watch_df_26_10__03_11[watch_list_26_10]
watch_list_2['Portfolio']=(watch_list_2*count_stock.values()).sum(1)
watch_list_2['Portfolio'][0]=100000
watch_list_2
create_line_chart(index_chart = watch_list_2.index,
values_chart = watch_list_2['Portfolio'],
end_time = '2021/11/03')
create_all_line_chart(watch_list = watch_list_26_10,
data = watch_list_2,
start_time = '2021/10/26',
end_time = '2021/11/03')
create_all_line_chart(watch_list = watch_list_26_10,
data = watch_list_2.pct_change(),
start_time = '2021/10/26',
end_time = '2021/11/03')
growth_during_week(data_stock = watch_list_2)
for i in watch_list_26_10:
print("Price of {} in 03/11/2021 is ----> {}".format(i,
round(watch_list_2[i][-1], 3)))
weight_i = count_stock[i] * watch_list_2[i][-1] / watch_list_2.iloc[-1, -1]
print("Weight of {} in our portfolio is ----> {}".format(i, round(weight_i,4)))
print("Overall value of {} in our portfolio is ----> {}".format(i,
round(watch_list_2[i][-1]*count_stock[i], 3)))
print("Count of {} stock is ----> {}".format(i, round(count_stock[i],3)))
print('\n##################################################\n')
watch_list_others = ["AMZN", "C", "AAPL", "IBM", "CSCO",
"TM", "CVX", "JPM", "JNJ",
"RLLCF", "WMT", "MA", "V", "DIS", "PG"]
watch_df_others = yf.download(watch_list_others,
start='2021-10-27',
end='2021-11-04',
progress=False,
)
watch_df_others = watch_df_others ['Close']
fig = go.Figure() # create figure
for i in watch_list_others:
fig.add_trace(go.Scatter(x=watch_df_others.index, y=watch_df_others.pct_change()[i], name = i) )
fig.update_layout(
dict(title_text="Rate of returns (from 2021/10/26 - 2021/11/03)",
autosize=True,
yaxis_title='rate of return')
)
fig.show()
fig = go.Figure() # create figure
for i in watch_list_others:
fig.add_trace(go.Scatter(x=watch_df_others.index, y=watch_df_others[i], name = i) )
fig.update_layout(
dict(title_text="STOCK DATA (from 2021/10/26 - 2021/11/03)",
autosize=True,
yaxis_title='Close price')
)
fig.show()
100*(watch_df_others.iloc[-1, :]-watch_df_others.iloc[0, :]) / watch_df_others.iloc[0, :]
new_03_11_2021_list = ['FB', 'GOOG', 'TSLA', 'MSFT','NVDA', 'TM' ]
watch_df_03_11 = yf.download(new_03_11_2021_list,
start='2021-11-04',
end='2021-11-04',
progress=False,
)
watch_df_03_11 = watch_df_03_11['Close']
watch_df_03_11
count_TM = (watch_list_2.iloc[-1, -1]*count_stock['BAC'] * watch_list_2['BAC'][-1] / watch_list_2.iloc[-1, -1]) / watch_df_others['TM'][-1]
count_stock["TM"] = count_stock.pop("BAC")
count_stock['TM'] = count_TM
for i in new_03_11_2021_list:
print("Price of {} in 03/11/2021 is ----> {}".format(i,
round(watch_df_03_11[i][-1], 3)))
weight_i = count_stock[i] * watch_df_03_11[i][-1] / watch_list_2.iloc[-1, -1]
print("Weight of {} in our portfolio is ----> {}".format(i, round(weight_i,4)))
print("Overall value of {} in our portfolio is ----> {}".format(i,
round(watch_df_03_11[i][-1]*count_stock[i], 3)))
print("Count of {} stock is ----> {}".format(i, round(count_stock[i],3)))
print('\n##################################################\n')
data_03_10=portfolio_df(start_time='2021-11-04',
end_time='2021-11-11',
stock_list=['FB', 'GOOG', 'TSLA', 'MSFT', 'NVDA', 'TM'],
count_stock=count_stock)
data_03_10
portfolio_values = watch_list_2['Portfolio']
portfolio_values=portfolio_values.append(data_03_10['Portfolio'][1:])
create_line_chart(index_chart = portfolio_values.index,
values_chart = portfolio_values.values,
end_time = '11/11/2021')
create_all_line_chart(watch_list = ['FB', 'GOOG', 'TSLA', 'MSFT', 'NVDA', 'TM'],
data = data_03_10,
start_time = '03/11/2021',
end_time = '10/11/2021')
create_all_line_chart(watch_list = ['FB', 'GOOG', 'TSLA', 'MSFT', 'NVDA', 'TM'],
data = data_03_10.pct_change(),
start_time = '03/11/2021',
end_time = '10/11/2021')
growth_during_week(data_stock = data_03_10)
description_portfolio(watch_list = ['FB', 'GOOG', 'TSLA', 'MSFT', 'NVDA', 'TM'],
data_portfolio = data_03_10,
count_stock = count_stock)
watch_list_others = ["AMZN", "C", "AAPL", "IBM", "CSCO",
"BAC", "CVX", "JPM", "JNJ",
"RLLCF", "WMT", "MA", "V", "DIS", "PG"]
watch_df_others = yf.download(watch_list_others,
start='2021-11-04',
end='2021-11-11',
progress=False,
)
watch_df_others = watch_df_others ['Close']
create_all_line_chart(watch_list = watch_list_others,
data = watch_df_others,
start_time = '03/11/2021',
end_time = '10/11/2021')
TSLA¶count_stock['TSLA']-= (30000/data_03_10['TSLA'][-1])
NVDA¶count_stock['NVDA'] += (15000/data_03_10['NVDA'][-1])
count_stock
df_11_11 = yf.download(['FB','GOOG','TSLA','MSFT','NVDA','TM','AMZN','MA'],
start='2021-11-11',
end='2021-11-11',
progress=False)
df_11_11 = df_11_11['Close']
df_11_11 = df_11_11.reindex(columns=['FB','GOOG','TSLA','MSFT','NVDA','TM','AMZN','MA'])
df_11_11
AMZN¶MA¶count_stock['AMZN'] = (10000/df_11_11['AMZN'][-1])
count_stock['MA'] = (5000/df_11_11['MA'][-1])
count_stock
df_11_11= portfolio_df(start_time='2021-11-11',
end_time='2021-11-11',
stock_list=['FB','GOOG','TSLA','MSFT','NVDA','TM','AMZN','MA'],
count_stock=count_stock)
df_11_11
description_portfolio(watch_list = ['FB','GOOG','TSLA','MSFT','NVDA','TM','AMZN','MA'],
data_portfolio = df_11_11,
count_stock = count_stock)
data_10_17=portfolio_df(start_time='2021-11-11',
end_time='2021-11-18',
stock_list=['FB','GOOG','TSLA','MSFT','NVDA','TM','AMZN','MA'],
count_stock=count_stock)
data_10_17
portfolio_values=portfolio_values.append(data_10_17['Portfolio'][1:])
create_line_chart(index_chart = portfolio_values.index,
values_chart = portfolio_values.values,
end_time = '11/17/2021')
create_all_line_chart(watch_list = ['FB','GOOG','TSLA','MSFT','NVDA','TM','AMZN','MA'],
data = data_10_17,
start_time = '10/11/2021',
end_time = '17/11/2021')
create_all_line_chart(watch_list = ['FB','GOOG','TSLA','MSFT','NVDA','TM','AMZN','MA'],
data = data_10_17.pct_change(),
start_time = '10/11/2021',
end_time = '17/11/2021')
growth_during_week(data_stock = data_10_17)
description_portfolio(watch_list = ['FB','GOOG','TSLA','MSFT','NVDA','TM','AMZN','MA'],
data_portfolio = data_10_17,
count_stock = count_stock)
create_others_price(all_watch_list = watch_list,
portfolio_list = ['FB','GOOG','TSLA','MSFT','NVDA','TM','AMZN','MA'],
start_time = '2021-11-11',
end_time = '2021-11-17')
GARCH model, but this is not good enough¶from arch import arch_model
from statsmodels.graphics.tsaplots import plot_acf, plot_pacf
from datetime import datetime, timedelta
returns = watch_df_others = yf.download(watch_list,
start='2021-01-01',
end='2021-11-17',
progress=False,
)['Close'].pct_change()
mean_forecast ={}
for i in range(len(returns.columns)):
train = returns.iloc[1:,i]
model = arch_model(train, p=3, q=3)
model_fit = model.fit(disp='off')
pred = model_fit.forecast(horizon=7)
future_dates = [returns.index[-1] + timedelta(days=i) for i in range(1,8)]
pred = pd.Series(np.sqrt(pred.variance.values[-1,:]), index=future_dates)
mean_forecast[returns.columns[i]] = round(pred.max(),3)
mean_forecast = dict( sorted(mean_forecast.items(),
key=lambda item: item[1],
reverse=True))
mean_forecast
MA stock¶# overall MA value
MA_value = count_stock['MA'] * data_10_17['MA'][-1]
del count_stock['MA']
TSLA¶count_stock['TSLA'] += MA_value / data_10_17['TSLA'][-1]
count_stock
df_17_17= portfolio_df(start_time='2021-11-18',
end_time='2021-11-18',
stock_list=['FB','GOOG','TSLA','MSFT','NVDA','TM','AMZN'],
count_stock=count_stock)
df_17_17
description_portfolio(watch_list = ['FB','GOOG','TSLA','MSFT','NVDA','TM','AMZN'],
data_portfolio = df_17_17,
count_stock = count_stock)
data_17_24 = portfolio_df(start_time='2021-11-18',
end_time='2021-11-25',
stock_list=['FB', 'GOOG', 'TSLA','MSFT', 'NVDA', 'TM', 'AMZN'],
count_stock=count_stock)
data_17_24
portfolio_values=portfolio_values.append(data_17_24['Portfolio'][1:])
create_line_chart(index_chart = portfolio_values.index,
values_chart = portfolio_values.values,
end_time = '24/11/2021')
description_portfolio(watch_list = ['FB', 'GOOG', 'TSLA','MSFT', 'NVDA', 'TM', 'AMZN'],
data_portfolio = data_17_24,
count_stock = count_stock)
create_all_line_chart(watch_list = ['FB', 'GOOG', 'TSLA','MSFT', 'NVDA', 'TM', 'AMZN'],
data = data_17_24,
start_time = '17/11/2021',
end_time = '24/11/2021')
create_all_line_chart(watch_list = ['FB', 'GOOG', 'TSLA','MSFT', 'NVDA', 'TM', 'AMZN'],
data = data_17_24.pct_change(),
start_time = '17/11/2021',
end_time = '24/11/2021')
growth_during_week(data_stock = data_17_24)
create_others_price(all_watch_list = watch_list,
portfolio_list = ['FB', 'GOOG', 'TSLA','MSFT', 'NVDA', 'TM', 'AMZN'],
start_time = '2021-10-01',
end_time = '2021-11-25')
GOOG stock¶# overall GOOG value
GOOG_value = count_stock['GOOG'] * data_17_24['GOOG'][-1]
del count_stock['GOOG']
AMZN stock¶# overall AMZN value
AMZN_value = count_stock['AMZN'] * data_17_24['AMZN'][-1]
del count_stock['AMZN']
count_stock['AAPL'] = (12000 / price_stock_in_date('AAPL','2021-11-25'))
count_stock['WMT'] = (6000 / price_stock_in_date('WMT','2021-11-25'))
count_stock['CSCO'] = (6000 / price_stock_in_date('CSCO','2021-11-25'))
count_stock['V'] = (6000 / price_stock_in_date('V','2021-11-25'))
count_stock['PG'] = ((GOOG_value + AMZN_value - 30000) / price_stock_in_date('PG','2021-11-25'))
data_25_11=portfolio_df(start_time='2021-11-25',
end_time='2021-11-25',
stock_list=['FB', 'TSLA','MSFT', 'NVDA', 'TM', 'AAPL','WMT','CSCO','V','PG'],
count_stock=count_stock)
data_25_11
description_portfolio(watch_list = ['FB', 'TSLA','MSFT', 'NVDA', 'TM', 'AAPL','WMT','CSCO','V','PG'],
data_portfolio = data_25_11,
count_stock = count_stock)
data_24_01 = portfolio_df(start_time='2021-11-25',
end_time='2021-12-02',
stock_list=['FB', 'TSLA', 'MSFT', 'NVDA',
'TM', 'AAPL', 'WMT', 'CSCO', 'V', 'PG'],
count_stock=count_stock)
data_24_01
portfolio_values=portfolio_values.append(data_24_01['Portfolio'][1:])
create_line_chart(index_chart = portfolio_values.index,
values_chart = portfolio_values.values,
end_time = '01/12/2021')
description_portfolio(watch_list = ['FB', 'TSLA', 'MSFT', 'NVDA',
'TM', 'AAPL', 'WMT', 'CSCO', 'V', 'PG'],
data_portfolio = data_24_01,
count_stock = count_stock)
create_all_line_chart(watch_list = ['FB', 'TSLA', 'MSFT', 'NVDA',
'TM', 'AAPL', 'WMT', 'CSCO', 'V', 'PG'],
data = data_24_01,
start_time = '24/11/2021',
end_time = '01/12/2021')
create_all_line_chart(watch_list = ['FB', 'TSLA', 'MSFT', 'NVDA',
'TM', 'AAPL', 'WMT', 'CSCO', 'V', 'PG'],
data = data_24_01.pct_change(),
start_time = '24/11/2021',
end_time = '01/12/2021')
growth_during_week(data_stock = data_24_01)
create_others_price(all_watch_list = watch_list,
portfolio_list = ['FB', 'TSLA', 'MSFT', 'NVDA',
'TM', 'AAPL', 'WMT', 'CSCO', 'V', 'PG'],
start_time = '2021-10-10',
end_time = '2021-12-02')
# overall FB value
FB_value = count_stock['FB'] * data_24_01['FB'][-1]
del count_stock['FB']
# overall WMT value
WMT_value = count_stock['WMT'] * data_24_01['WMT'][-1]
del count_stock['WMT']
# overall V value
V_value = count_stock['V'] * data_24_01['V'][-1]
del count_stock['V']
count_stock['JNJ'] = (4000 / price_stock_in_date('JNJ','2021-12-02'))
count_stock['AAPL'] += ((FB_value + WMT_value + V_value - 4000) / price_stock_in_date('AAPL','2021-12-02'))
count_stock
data_02_12=portfolio_df(start_time='2021-12-02',
end_time='2021-12-02',
stock_list=['TSLA','MSFT', 'NVDA', 'TM', 'AAPL','CSCO','PG','JNJ'],
count_stock=count_stock)
data_02_12
description_portfolio(watch_list = ['TSLA','MSFT', 'NVDA', 'TM',
'AAPL','CSCO','PG','JNJ'],
data_portfolio = data_02_12,
count_stock = count_stock)
data_01_08 = portfolio_df(start_time='2021-12-02',
end_time='2021-12-09',
stock_list=['TSLA','MSFT', 'NVDA', 'TM',
'AAPL','CSCO','PG','JNJ'],
count_stock=count_stock)
data_01_08
portfolio_values=portfolio_values.append(data_01_08['Portfolio'][1:])
create_line_chart(index_chart = portfolio_values.index,
values_chart = portfolio_values.values,
end_time = '08/12/2021')
description_portfolio(watch_list = ['TSLA','MSFT', 'NVDA', 'TM',
'AAPL','CSCO','PG','JNJ'],
data_portfolio = data_01_08,
count_stock = count_stock)
create_all_line_chart(watch_list = ['TSLA','MSFT', 'NVDA', 'TM',
'AAPL','CSCO','PG','JNJ'],
data = data_01_08,
start_time = '01/12/2021',
end_time = '08/12/2021')
create_all_line_chart(watch_list = ['TSLA','MSFT', 'NVDA', 'TM',
'AAPL','CSCO','PG','JNJ'],
data = data_01_08.pct_change(),
start_time = '01/12/2021',
end_time = '08/12/2021')
growth_during_week(data_stock = data_01_08)
create_others_price(all_watch_list = watch_list,
portfolio_list = ['TSLA','MSFT', 'NVDA', 'TM',
'AAPL','CSCO','PG','JNJ'],
start_time = '2021-10-20',
end_time = '2021-12-09')
create_line_chart_port(watch_list_port = ['TSLA','MSFT', 'NVDA', 'TM',
'AAPL','CSCO','PG','JNJ'],
start_time = '2021-10-10',
end_time = '2021-12-09')
# overall TM value
TM_value = count_stock['TM'] * data_01_08['TM'][-1]
del count_stock['TM']
# overall CSCO value
CSCO_value = count_stock['CSCO'] * data_01_08['CSCO'][-1]
del count_stock['CSCO']
# overall MSFT value
MSFT_value = count_stock['MSFT'] * data_01_08['MSFT'][-1]
del count_stock['MSFT']
TM_value + CSCO_value + MSFT_value
# Buy FB stock with $4000
count_stock['FB'] = (4000 / price_stock_in_date('FB','2021-12-09'))
# Buy MA stock with $4000
count_stock['MA'] = (4000 / price_stock_in_date('MA','2021-12-09'))
# Buy V stock with $3585.5
count_stock['V'] = ((TM_value + CSCO_value + MSFT_value - 8000) / price_stock_in_date('V','2021-12-09'))
count_stock['NVDA'] -= (15000 / price_stock_in_date('NVDA','2021-12-09'))
count_stock['AAPL'] += (15000 / price_stock_in_date('AAPL','2021-12-09'))
data_09_12=portfolio_df(start_time='2021-12-09',
end_time='2021-12-09',
stock_list=['TSLA', 'NVDA', 'AAPL','PG','JNJ', 'FB', 'MA', 'V'],
count_stock=count_stock)
data_09_12
description_portfolio(watch_list = ['TSLA', 'NVDA', 'AAPL','PG',
'JNJ', 'FB', 'MA', 'V'],
data_portfolio = data_09_12,
count_stock = count_stock)
data_08_15 = portfolio_df(start_time='2021-12-09',
end_time='2021-12-16',
stock_list=['TSLA', 'NVDA', 'AAPL','PG',
'JNJ', 'FB', 'MA', 'V'],
count_stock=count_stock)
data_08_15
portfolio_values=portfolio_values.append(data_08_15['Portfolio'][1:])
create_line_chart(index_chart = portfolio_values.index,
values_chart = portfolio_values.values,
end_time = '15/12/2021')
description_portfolio(watch_list = ['TSLA', 'NVDA', 'AAPL','PG',
'JNJ', 'FB', 'MA', 'V'],
data_portfolio = data_08_15,
count_stock = count_stock)
create_all_line_chart(watch_list = ['TSLA', 'NVDA', 'AAPL','PG',
'JNJ', 'FB', 'MA', 'V'],
data = data_08_15,
start_time = '08/12/2021',
end_time = '15/12/2021')
create_all_line_chart(watch_list = ['TSLA', 'NVDA', 'AAPL','PG',
'JNJ', 'FB', 'MA', 'V'],
data = data_08_15.pct_change(),
start_time = '08/12/2021',
end_time = '15/12/2021')
growth_during_week(data_stock = data_08_15)
create_others_price(all_watch_list = watch_list,
portfolio_list = ['TSLA', 'NVDA', 'AAPL','PG',
'JNJ', 'FB', 'MA', 'V'],
start_time = '2021-11-02',
end_time = '2021-12-16')
create_line_chart_port(watch_list_port = ['TSLA', 'NVDA', 'AAPL','PG',
'JNJ', 'FB', 'MA', 'V'],
start_time = '2021-10-15',
end_time = '2021-12-16')
# overall TSLA value
TSLA_value = count_stock['TSLA'] * data_08_15['TSLA'][-1]
del count_stock['TSLA']
TSLA_value
# Buy JNJ stock with $4000
count_stock['JNJ'] += (4000 / price_stock_in_date('JNJ','2021-12-16'))
# Buy FB stock with $4000
count_stock['FB'] += (4000 / price_stock_in_date('FB','2021-12-16'))
# Buy MA stock with $4000
count_stock['MA'] += (4000 / price_stock_in_date('MA','2021-12-16'))
# Buy V stock with $4000
count_stock['V'] += (4000 / price_stock_in_date('V','2021-12-16'))
# Buy PG stock with $3585.5
count_stock['PG'] += ((TSLA_value - 16000) / price_stock_in_date('PG','2021-12-16'))
data_16_12=portfolio_df(start_time='2021-12-16',
end_time='2021-12-16',
stock_list=['NVDA', 'AAPL','PG',
'JNJ', 'FB', 'MA', 'V'],
count_stock=count_stock)
data_16_12
description_portfolio(watch_list = ['NVDA', 'AAPL','PG',
'JNJ', 'FB', 'MA', 'V'],
data_portfolio = data_16_12,
count_stock = count_stock)
data_15_22 = portfolio_df(start_time='2021-12-16',
end_time='2021-12-23',
stock_list=['NVDA', 'AAPL','PG',
'JNJ', 'FB', 'MA', 'V'],
count_stock=count_stock)
data_15_22
portfolio_values=portfolio_values.append(data_15_22['Portfolio'][1:])
create_line_chart(index_chart = portfolio_values.index,
values_chart = portfolio_values.values,
end_time = '22/12/2021')
description_portfolio(watch_list = ['NVDA', 'AAPL','PG',
'JNJ', 'FB', 'MA', 'V'],
data_portfolio = data_15_22,
count_stock = count_stock)
create_all_line_chart(watch_list = ['NVDA', 'AAPL','PG',
'JNJ', 'FB', 'MA', 'V'],
data = data_15_22,
start_time = '15/12/2021',
end_time = '22/12/2021')
create_all_line_chart(watch_list = ['NVDA', 'AAPL','PG',
'JNJ', 'FB', 'MA', 'V'],
data = data_15_22.pct_change(),
start_time = '15/12/2021',
end_time = '22/12/2021')
growth_during_week(data_stock = data_15_22)
create_others_price(all_watch_list = watch_list,
portfolio_list = ['NVDA', 'AAPL','PG',
'JNJ', 'FB', 'MA', 'V'],
start_time = '2021-11-02',
end_time = '2021-12-23')
create_line_chart_port(watch_list_port = ['NVDA', 'AAPL','PG',
'JNJ', 'FB', 'MA', 'V'],
start_time = '2021-10-23',
end_time = '2021-12-23')
buy TSLA, CSCO, IBM, sell FB, JNJ, MA, V
# overall FB value
FB_value = count_stock['FB'] * data_15_22['FB'][-1]
del count_stock['FB']
# overall JNJ value
JNJ_value = count_stock['JNJ'] * data_15_22['JNJ'][-1]
del count_stock['JNJ']
# overall MA value
MA_value = count_stock['MA'] * data_15_22['MA'][-1]
del count_stock['MA']
# overall V value
V_value = count_stock['V'] * data_15_22['V'][-1]
del count_stock['V']
# Sell NVDA stock with $10000
count_stock['NVDA'] -= (10000 / price_stock_in_date('NVDA','2021-12-23'))
# Sell AAPL stock with $10000
count_stock['AAPL'] -= (10000 / price_stock_in_date('AAPL','2021-12-23'))
sell_22 = FB_value + JNJ_value + MA_value + V_value + 2 * 10000
# Buy TSLA stock with $20000
count_stock['TSLA'] = (20000 / price_stock_in_date('TSLA','2021-12-23'))
# Buy CSCO stock with $16000
count_stock['CSCO'] = (16000 / price_stock_in_date('CSCO','2021-12-23'))
# Buy IBM stock with $16193
count_stock['IBM'] = ((sell_22 - 20000 - 16000) / price_stock_in_date('IBM','2021-12-23'))
data_22_12=portfolio_df(start_time='2021-12-23',
end_time='2021-12-23',
stock_list=['NVDA', 'AAPL','PG',
'TSLA', 'CSCO', 'IBM'],
count_stock=count_stock)
data_22_12
description_portfolio(watch_list = ['NVDA', 'AAPL','PG',
'TSLA', 'CSCO', 'IBM'],
data_portfolio = data_22_12,
count_stock = count_stock)
data_22_29 = portfolio_df(start_time='2021-12-23',
end_time='2021-12-30',
stock_list=['NVDA', 'AAPL','PG',
'TSLA', 'CSCO', 'IBM'],
count_stock=count_stock)
data_22_29
portfolio_values=portfolio_values.append(data_22_29['Portfolio'][1:])
create_line_chart(index_chart = portfolio_values.index,
values_chart = portfolio_values.values,
end_time = '29/12/2021')
description_portfolio(watch_list = ['NVDA', 'AAPL','PG',
'TSLA', 'CSCO', 'IBM'],
data_portfolio = data_22_29,
count_stock = count_stock)